package SingleLinkedList;

public class Test {



    public static MySingleLinkedList.ListNode mergeTwoLists(MySingleLinkedList.ListNode list1,
                                                     MySingleLinkedList.ListNode list2) {
        MySingleLinkedList.ListNode newH=new MySingleLinkedList.ListNode();
        MySingleLinkedList.ListNode tmp=newH;
        while(list1!=null && list2!=null) {
            if(list1.val<=list2.val) {
                tmp.next=list1;
                list1=list1.next;
                tmp=tmp.next;
            }else {
                tmp.next=list2;
                list2=list2.next;
                tmp=tmp.next;
            }
        }
        if(list1==null) {
            tmp.next=list2;
        }
        if(list2==null) {
            tmp.next=list1;
        }
        return newH.next;
    }


    public static void main(String[] args) {
        MySingleLinkedList list1=new MySingleLinkedList();
        list1.addLast(1);
        list1.addLast(3);
        list1.addLast(18);
        list1.addLast(50);
        list1.addLast(5);
        MySingleLinkedList.ListNode ret=list1.partition(12);
        list1.display(ret);
    }


    public static void main5(String[] args) {
        MySingleLinkedList list1=new MySingleLinkedList();
        list1.addLast(1);
        list1.addLast(3);
        list1.addLast(5);

        MySingleLinkedList list2=new MySingleLinkedList();
        list2.addLast(2);
        list2.addLast(3);
        list2.addLast(7);

        MySingleLinkedList.ListNode newH=mergeTwoLists(list1.head,list2.head);
        list1.display(newH);

    }

    public static void main4(String[] args) {
        MySingleLinkedList msl=new MySingleLinkedList();
        msl.addLast(1);
        msl.addLast(2);
        msl.addLast(3);
        msl.addLast(4);
        msl.addLast(5);
        System.out.println(msl.kthToLast(6));
    }

    public static void main3(String[] args) {
        MySingleLinkedList msl=new MySingleLinkedList();
        msl.addLast(1);
        msl.addLast(2);
        msl.addLast(3);
        msl.addLast(4);
        msl.addLast(5);
//        msl.addLast(6);
        MySingleLinkedList.ListNode ret=msl.middleNode1();
        System.out.println(ret.val);
    }
    public static void main2(String[] args) {
        MySingleLinkedList msl=new MySingleLinkedList();
        msl.addLast(1);
        msl.addLast(2);
        msl.addLast(3);
        msl.addLast(4);
        msl.addLast(5);
//        msl.addLast(6);
//        msl.display();
        msl.reverseList();
//        msl.display();

    }
    public static void main1(String[] args) {
        MySingleLinkedList msl=new MySingleLinkedList();
//        msl.createList();
//        msl.display();
//
//        System.out.println(msl.size());

//        System.out.println("======");
        msl.addFirst(1);
        msl.addFirst(2);
        msl.addFirst(3);
//        msl.display();
        System.out.println(msl.size());
//        System.out.println("========");
//        msl.addLast(4);
//        msl.addLast(5);
//        msl.addLast(6);
//        msl.display();
//        System.out.println("========");
//        msl.addIndex(0,100);
//        msl.addIndex(3,100);
//        msl.addIndex(8,100);
//        msl.display();
//
//        System.out.println("=======");
//        System.out.println(msl.contains(200));
//
//        System.out.println("==========");
//        msl.removeAllKey(100);
//        msl.display();

    }
}
